Collaborative environments are becoming pervasive in the industry. One area of collaboration that is critical to an enterprise is that which is associated with new software development. During software development a variety of different developers can be working on the same or dependent modules at the same time and in entirely different processing environments. A variety of different project life-cycle and version control systems attempt to coordinate project activities in scenarios such as this.
One issue with code-based team environments is that the code modules often include a variety of dependencies and are in hierarchical relationships with one another. So, code module A may be a parent module to code modules B and C. The typical manner in which these relationships between parent and children are managed is via pointers. So, the parent module A includes two pointers to children B and C; and each child B or C include a back pointer to parent A.
Any developer readily appreciates the nightmare that a large complex development environment can quickly become when trying to keep these pointers updated and in synchronization with one another. Moreover, one developer may be modifying a parent module at the same time another developer needs to modify the same parent module. So, conflicts can readily occur leading to lock outs or inconsistencies in the modules themselves.
Thus, improved mechanisms are needed for managing module relationships and dependencies within a project-based environment.